Apache Xerces একটি শক্তিশালী XML লাইব্রেরি যা XML ডেটার বৈধতা যাচাইয়ের জন্য ব্যবহার করা হয়। XML Validation XML ডেটা যাচাই করতে সহায়ক, যাতে এটি DTD (Document Type Definition) বা XML Schema (XSD) এর সাথে সঙ্গতিপূর্ণ থাকে।
এই উদাহরণে, আমরা দেখাবো কীভাবে Apache Xerces ব্যবহার করে XML ডেটা XML Schema বা DTD এর বিরুদ্ধে যাচাই করা যায়।
1. XML Schema Validation (XSD Validation) Example
ধরা যাক, আমাদের একটি XML ফাইল রয়েছে এবং আমরা এটিকে একটি XML Schema (XSD) এর বিরুদ্ধে যাচাই করতে চাই। XML Schema একটি নির্দিষ্ট গঠন এবং ধরন নির্ধারণ করে, যার মাধ্যমে XML ডেটা বৈধতা যাচাই করা যায়।
XML Schema (XSD) Example (employee.xsd):
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="employee">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="age" type="xs:int"/>
<xs:element name="department" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
এটি একটি XML Schema (XSD) ফাইল যা employee এলিমেন্টের গঠন এবং তার অন্তর্ভুক্ত উপাদানগুলো name, age, এবং department নির্ধারণ করে।
XML File Example (employee.xml):
<?xml version="1.0" encoding="UTF-8"?>
<employee>
<name>John Doe</name>
<age>30</age>
<department>Engineering</department>
</employee>
এটি একটি সাধারণ XML ডকুমেন্ট যা আমাদের যাচাই করার জন্য তৈরি করা হয়েছে।
XML Validation Code Using Apache Xerces:
এখন, আমরা Apache Xerces ব্যবহার করে XML ডেটা যাচাই করার কোড লিখব, যাতে এটি employee.xsd স্কিমার বিরুদ্ধে বৈধ কিনা যাচাই করা হবে।
import org.apache.xerces.parsers.XMLParser;
import org.apache.xerces.util.XMLCatalog;
import org.apache.xerces.xni.parser.XMLParserConfiguration;
import org.apache.xerces.impl.xs.XSImplementation;
import org.apache.xerces.impl.xs.XMLSchemaLoader;
import org.apache.xerces.xs.XSSchema;
import org.apache.xerces.xs.XSSimpleType;
import org.xml.sax.SAXException;
import javax.xml.XMLConstants;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Validator;
import java.io.File;
import java.io.IOException;
public class XMLValidationExample {
public static void main(String[] args) {
try {
// XML Schema Factory for validation
SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
// Load the XSD schema file
File schemaFile = new File("src/employee.xsd");
Schema schema = factory.newSchema(schemaFile);
// Create Validator object
Validator validator = schema.newValidator();
// Validate the XML file against the XSD schema
File xmlFile = new File("src/employee.xml");
validator.validate(new javax.xml.transform.stream.StreamSource(xmlFile));
// If no exception is thrown, the XML is valid
System.out.println("XML is valid against the schema.");
} catch (SAXException | IOException e) {
// If an exception is thrown, the XML is invalid
System.out.println("XML is NOT valid: " + e.getMessage());
}
}
}
কোড ব্যাখ্যা:
- SchemaFactory: SchemaFactory ব্যবহার করে আমরা একটি XML Schema তৈরি করি যা employee.xsd ফাইল থেকে লোড হবে।
- Validator: Validator ক্লাসটি XML ডেটা যাচাই করার জন্য ব্যবহৃত হয়। এটি XML Schema এর বিরুদ্ধে XML ডেটা যাচাই করে।
- validate() মেথড:
validate()মেথড ব্যবহার করে আমরা employee.xml ফাইলটি employee.xsd স্কিমার বিরুদ্ধে যাচাই করি। - Exception Handling: যদি XML ডেটা স্কিমার সাথে মেলে না, তবে SAXException বা IOException এর মাধ্যমে একটি ত্রুটি ঘটবে।
আউটপুট:
- যদি XML ফাইলটি স্কিমার সাথে সঙ্গতিপূর্ণ হয়, তাহলে আউটপুট হবে:
XML is valid against the schema.
- যদি XML ফাইলটি স্কিমার সাথে সঙ্গতিপূর্ণ না হয়, তাহলে একটি ত্রুটি মেসেজ দেখা যাবে:
XML is NOT valid: The element type "employee" must be followed by a matching element...
2. DTD Validation Example
এছাড়া, আপনি DTD (Document Type Definition) ব্যবহার করে XML ডেটার বৈধতা যাচাই করতে পারেন। এখানে আমরা DTD ব্যবহার করে একটি XML ডকুমেন্টের বৈধতা যাচাই করার একটি উদাহরণ দেখাবো।
DTD Example (employee.dtd):
<!ELEMENT employee (name, age, department)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT department (#PCDATA)>
এটি একটি DTD যা XML ডকুমেন্টের employee এলিমেন্টের গঠন এবং এর অন্তর্ভুক্ত name, age, এবং department এলিমেন্টের ধরন নির্ধারণ করে।
XML File Example with DTD (employee_with_dtd.xml):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE employee SYSTEM "employee.dtd">
<employee>
<name>John Doe</name>
<age>30</age>
<department>Engineering</department>
</employee>
XML Validation Code Using DTD:
import org.apache.xerces.parsers.SAXParser;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
public class DTDValidationExample {
public static void main(String[] args) {
try {
// SAXParser তৈরি করা
SAXParser parser = new SAXParser();
// XML ডকুমেন্টে DTD বৈধতা যাচাই করতে SAXParser ব্যবহার করা
parser.setFeature("http://apache.org/xml/features/validation/schema", true);
// DTD Validation Handler সেট করা
parser.setContentHandler(new DefaultHandler());
// XML ডকুমেন্ট প্যার্স করা
parser.parse("src/employee_with_dtd.xml");
System.out.println("XML is valid against the DTD.");
} catch (SAXException | IOException e) {
System.out.println("XML is NOT valid: " + e.getMessage());
}
}
}
আউটপুট:
- যদি XML ফাইলটি DTD এর বিরুদ্ধে বৈধ হয়, আউটপুট হবে:
XML is valid against the DTD.
- যদি XML ফাইলটি DTD এর বিরুদ্ধে বৈধ না হয়, তাহলে ত্রুটির মেসেজ প্রদর্শিত হবে:
XML is NOT valid: The element type "employee" must be followed by a matching element...
সারাংশ
Apache Xerces ব্যবহার করে আপনি সহজেই XML Validation করতে পারেন, যা XML ডেটা DTD বা XML Schema (XSD) এর সাথে তুলনা করে বৈধতা যাচাই করে। DTD Validation XML ডেটার গঠন যাচাই করতে সহায়তা করে, এবং XML Schema Validation (XSD) XML ডেটার গঠন এবং ধরন যাচাই করতে আরও শক্তিশালী সমাধান প্রদান করে। এই উদাহরণগুলির মাধ্যমে আপনি Xerces ব্যবহার করে XML ডেটা বৈধতা যাচাইয়ের প্রক্রিয়া শিখতে পারবেন।
Read more